//思路： 两两交换链表中的节点，

import java.util.List;

public class Solution {
    public static void main(String[] args) {
        ListNode l5 = new ListNode(5, null);
        ListNode l4 = new ListNode(4, l5);
        ListNode l3 = new ListNode(3, l4);
        ListNode l2 = new ListNode(2, l3);
        ListNode l1 = new ListNode(1, l2);
        l1 = swapPairs(l1);
        ListNode p=l1;
        while(p!=null){
            System.out.print(p.val+" ");
            p=p.next;
        }

    }

    public static ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode p = head;
        head=head.next;
        p.next=head.next;
        head.next=p;
        ListNode pre=p;
        p=p.next;
        ListNode q;
        while (p != null && p.next != null) {
           q=p.next;
           pre.next=q;
           p.next=q.next;
           q.next=p;
           pre=p;
           p=p.next;
        }
        return head;
    }
}


    class ListNode {
        int val;
        ListNode next;

        ListNode() {
        }

        ListNode(int val) {
            this.val = val;
        }

        ListNode(int val, ListNode next) {
            this.val = val;
            this.next = next;
        }
    }









